package com.newsnetwork.user.service;

import com.newsnetwork.enums.Sex;
import com.newsnetwork.pojo.vo.RegionRatioVO;
import com.newsnetwork.utils.PagedGridResult;

import java.util.List;

/**
 * @author: HuangDekai
 * @date: 2022/11/15 14:11
 * @version: 1.0
 * @since: jdk8
 * @description: 粉丝管理相关
 */
public interface MyFansService {
    /**
     * 查询当前用户是否关注该作家
     * @param writerId 作家id
     * @param fanId 粉丝id
     * @return true/false
     */
    boolean isMeFollowThisWriter(String writerId, String fanId);

    /**
     * 粉丝关注该作家
     * @param writerId 作家id
     * @param fanId 粉丝id
     */
    void follow(String writerId, String fanId);

    /**
     * 粉丝取消关注该作家
     * @param writerId 作家id
     * @param fanId 粉丝id
     */
    void unfollow(String writerId, String fanId);

    /**
     * 分页查询作者的粉丝列表
     * @param writerId 作者id
     * @param page 分页中的第几页
     * @param pageSize 分页每页有几条记录
     * @return 分页好的指定页的查询结果
     */
    PagedGridResult queryMyFansList(String writerId, Integer page, Integer pageSize);

    /**
     * 查询作者粉丝数量
     * @param writerId 作家id
     * @return 粉丝数量
     */
    Integer queryFansCounts(String writerId);

    /**
     * 查询作者关注数量
     * @param writerId 作家id
     * @return 关注数量
     */
    Integer queryFollowCounts(String writerId);

    /**
     * 以性别查询作者粉丝数量
     * @param writerId 作家id
     * @param sex 性别
     * @return 数量
     */
    Integer queryFansCounts(String writerId, Sex sex);

    /**
     * 以地域查询作者粉丝数量
     * @param writerId 作家id
     * @return 数量
     */
    List<RegionRatioVO> queryFansCountsByRegion(String writerId);
}
